# -*- coding: utf-8 -*-
# @Time    : 2024/11/18 10:41
# @Author  : wangwei
# @File    : file_load.py
import pandas
import yaml

from get_project_path import project_path


#读取excel文件
def read_excel(filepath,sheet_name):
    # keep_default_na默认是True，意思是读取空单元格时结果是na，na的话咱么后续不好处理
    # 所以我们把他设置为False，那么空单元格读取后就是空字符串
    # engine表示pandas在读取excel时使用的底层引擎，所以装pandas还是装openpyxl
    res = pandas.read_excel(f'{project_path}{filepath}',sheet_name=sheet_name,keep_default_na=False,engine='openpyxl')
    # print(res)
    # res结果数据格式不符合pytest参数化时需要的数据格式，所以我们要做数据转换
    # 目前我们pytest参数化时都采用的数据格式是一个二维列表，所以我们将res转成二维列表

    lines_count = res.shape[0] # 获取总行数
    cols_count = res.shape[1] # 获取总列数
    data = [] # data就是用来存储我们转换之后的数据的
    for l in range(lines_count):
        line = [] # 存储当前行的数据
        for c in range(cols_count):
            cell_data = res.iloc[l,c] # 根据行和列得到某个单元格的数据
            line.append(cell_data)
        data.append(line)
    return data

#读取yaml文件
def load_yaml_file(filepath):
    with open(file=f'{project_path}{filepath}',mode='r',encoding='UTF-8') as f:
        content = yaml.load(f,Loader=yaml.FullLoader)
        return content

#写入yaml文件
def write_yaml(filepath,content):
    with open(file=f'{project_path}{filepath}',mode='w',encoding='UTF-8') as f:
        yaml.dump(content,f,Dumper=yaml.Dumper)

if __name__ == '__main__':
    print(read_excel('/data/mtxshop_keyword.xlsx', '测试用例集合'))
    print(load_yaml_file('/data/mtxshop_testdata.yml'))